iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
自我挑戰組

純新手學習 JavaScript系列 第 16

新手學習JavaScript:day16 - 變數的更新與傳遞(2)

  • 分享至 

  • xImage
  •  

昨天我們介紹了「傳值」與「傳址」,所以呢,按照昨天的範例我們應該可以統整出一個結論是基本型是「傳值」,物件是「傳址」,但往往就是會有例外。今天就來讓我們來看看例外吧!

Pass by sharing
我們直接來看看範例:

var apple = {value: 10};

function rising(obj){
    obj = {value: 25};
}

rising(apple);

console.log(apple.value); //10

如果我們用之前的「傳址」來更新資料,那不是應該印出25怎麼還是10?
其實就是因為它應該是透過「pass by sharing」的形式傳遞,那它的特點就是當function的參數obj被重新賦值的時候,外部的內容是不會被改變的,如果不是重新賦值那就會跟原本預期的一樣:

var apple = {value: 10};

function rising(obj){
    obj.value = 25;
}

rising(apple);

console.log(apple.value); //25

所以這邊做個小小統整,JavaScript物件更新時會影響到引用這個物件的變數,修改時會變動到原本的參考。而當賦予新值時,會產生新的實體參考。

以上就是關於物件的資料傳遞。JavaScript的基礎介紹就到這邊,接下來的幾天要進入leetcode的練習,我們明天見吧!


上一篇
新手學習JavaScript:day15 - 變數的更新與傳遞
下一篇
新手學習JavaScript:day17 - 演算法與時間複雜度
系列文
純新手學習 JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言